package com.wltjack.sysmanage.common.util;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

import java.lang.reflect.Field;

/**
 * @ClassName TableFieldUtil
 * @Description TableField帮助类
 * @Author kangliang
 * @Date 2021/07/05 19:41
 * @Version 1.0
 */
@Slf4j
public class TableFieldUtil {

    /**
     * 功能描述: 获取某个类的某个属性上的 TableField 注解的value值
     *
     * @param clazz     类名
     * @param fieldName 属性名称
     * @return: value值
     * @Author: kangliang
     * @Date: 2021-07-05 19:42
     */
    public static String getTableFieldValue(Class clazz, String fieldName) {
        // 当前类的所有的字段
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            if (StringUtils.equals(field.getName(), fieldName)) {
                TableField annotation = field.getAnnotation(TableField.class);
                if (annotation != null) {
                    return annotation.value();
                }
            }
        }

        // 当前类的父类的所有的字段
        Field[] superFields = clazz.getSuperclass().getDeclaredFields();
        for (Field superField : superFields) {
            if (StringUtils.equals(superField.getName(), fieldName)) {
                TableField annotation = superField.getAnnotation(TableField.class);
                if (annotation != null) {
                    return annotation.value();
                }
                TableId annotation2 = superField.getAnnotation(TableId.class);
                if (annotation2 != null) {
                    return annotation2.value();
                }
            }
        }
        return "";
    }

}
